package bean;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Transient;

/**
 * 
 * @author Daniel Rodrigues
 */

@Entity
@Table(name = "pessoa")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Pessoa implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = -8001629553655911473L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private long id;

	@Column(name = "nome", nullable = false)
	private String nome;

	@Column(name = "datanascimento", nullable = false)
	@Temporal(javax.persistence.TemporalType.DATE)
	private Date datanascimento;

	@Column(name = "endereco")
	private String endereco;

	@Column(name = "cpf", nullable = false, unique = true, length = 12)
	private String cpf;

	// Para definir se a pessoa pode locar o filme ou nao
	@Column(name = "podelocar", nullable = false)
	private boolean podelocar = true;

	@Transient
	private int idade;

	public Pessoa() {

	}

	public Pessoa(long id, String nome, String endereco, String telefone,
			String CPF) {
		this.id = id;
		this.nome = nome;
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Date getDatanascimento() {
		return datanascimento;
	}

	public void setDatanascimento(Date datanascimento) {
		this.datanascimento = datanascimento;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public boolean isPodelocar() {
		return podelocar;
	}

	public void setPodelocar(boolean podelocar) {
		this.podelocar = podelocar;
	}

	@SuppressWarnings("deprecation")
	public int getIdade() {
		Date dataDeHoje = new Date();
		this.idade = dataDeHoje.getDate() - this.datanascimento.getDate();
		return idade;
	}

}
